function checkIdCardNumber (idcard) {
	let Errors = [
			{code:0, status: true, msg: '验证通过!' },
			{code:1, status: false, msg: '身份证号码位数不对!' },
			{code:2, status: false, msg: '身份证号码出生日期超出范围或含有非法字符!' },
			{code:3, status: false, msg: '身份证号码校验错误!' },
			{code:4, status: false, msg: '身份证地区非法!' },
	];
	let area = {
			11: "北京",
			12: "天津",
			13: "河北",
			14: "山西",
			15: "内蒙古",
			21: "辽宁",
			22: "吉林",
			23: "黑龙江",
			31: "上海",
			32: "江苏",
			33: "浙江",
			34: "安徽",
			35: "福建",
			36: "江西",
			37: "山东",
			41: "河南",
			42: "湖北",
			43: "湖南",
			44: "广东",
			45: "广西",
			46: "海南",
			50: "重庆",
			51: "四川",
			52: "贵州",
			53: "云南",
			54: "西藏",
			61: "陕西",
			62: "甘肃",
			63: "青海",
			64: "宁夏",
			65: "新疆",
			71: "台湾",
			81: "香港",
			82: "澳门",
			91: "国外",
	};
	let ereg;
	let idcard_array = idcard.split("");

	if (area[parseInt(idcard.substr(0, 2))] === null) return Errors[4];
	switch (idcard.length) {
			case 18:
					if (
							parseInt(idcard.substr(6, 4)) % 4 == 0 ||
							(parseInt(idcard.substr(6, 4)) % 100 == 0 &&
									parseInt(idcard.substr(6, 4)) % 4 == 0)
					) {
							ereg =
									/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;
							//闰年出生日期的合法性正则表达式
					} else {
							ereg =
									/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;
							//平年出生日期的合法性正则表达式
					}
					if (ereg.test(idcard)) {
							let S =
									(parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 +
									(parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
									(parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 +
									(parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
									(parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 +
									(parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
									(parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 +
									parseInt(idcard_array[7]) * 1 +
									parseInt(idcard_array[8]) * 6 +
									parseInt(idcard_array[9]) * 3;
							let Y = S % 11;
							let M = "F";
							let JYM = "10X98765432";
							M = JYM.substr(Y, 1);
							if (M == idcard_array[17]) return Errors[0];
							else return Errors[3];
					} else return Errors[2];
			default:
					return Errors[1];
	}
}

// todo 测试
let str = '32031177070600'

console.log(checkIdCardNumber(str))



	// (function (a, b, c, d, e, f) {a.npsmeter = a.npsmeter || function () {(a.npsmeter.q = a.npsmeter.q || []).push(arguments);}; a._npsSettings = {  npssv: '1.01' };e = b.getElementsByTagName('head')[0]; f = b.createElement('script'); f.async = 1; f.src = c + d + a._npsSettings.npssv + '&npsid=' + a._npsSettings.npsid;e.appendChild(f);})(window, document, 'https://static.npsmeter.cn/npsmeter', '.js?sv='); 
		
		// npsmeter({key : '8cf8f21ad4134b5e',user_id : '',user_name : ''})


// (function (a, b, c, d, e, f) {
//   a.vscore =
//     a.vscore ||
//     function () {
//       (a.vscore.q = a.vscore.q || []).push(arguments);
//     };
//   a._npsSettings = { npssv: "1.02" };
//   e = b.getElementsByTagName("head")[0];
//   f = b.createElement("script");
//   f.async = 1;
//   f.src = c + d+a._npsSettings.npssv;
//   e.appendChild(f);
// })(window, document, "../dist/v-score-ui.min", ".js?sv=");

// setTimeout(() => {
	// Vscore.init({
  //   userId: "user1233", // 用户id
  //   userKey: "1232342111231333", // 
  // })
// }, 100);
